package com.leo.offer;

import com.leo.datastruct.sort.HeapSort;

/**
 * 在O（1）时间删除链表结点
 * @author xuexiaolei
 * @version 2018年03月01日
 */
public class T13 {
    private static Node head = null;
    public static void deleteNode(Node cur){
        //如果被删是头结点
        if (head == cur){ head = head.next; }

        if (cur.next != null){
            //如果有接下来的节点，那就把下一个节点的值复制过来，然后删除下一个节点即可
            Node next = cur.next;
            cur.val = next.val;
            cur.next = next.next;
            next.next = null;
        }else {
            //当前节点是尾节点，只能顺序删除了
            Node i = head;
            while (i.next != cur){ i = i.next; }
            i.next = null;
        }
    }
}
